package demo.practice.stack;

import java.util.Stack;

public class P1021 {


    public static void main(String[] args) {
        P1021 p1021= new P1021();
        p1021.removeOuterParentheses("(()())(())(()(()))");
        //(()())(()) (()(()))
        //           10
    }

    public String removeOuterParentheses(String S) {
        StringBuffer sb= new StringBuffer();
        Stack<Character> stack= new Stack();

        for(int i=0;i<S.length();i++){
            if(S.charAt(i)=='('){//肯定是加入栈
                //当栈不为空，则不是最外层括号，则向sb中加入一个(
                if(!stack.empty())
                    sb.append('(');
                stack.add('(');
            }else{
                //
                if(stack.peek()=='('&&S.charAt(i)==')'&& stack.size()>1  ){//如果当前栈顶为'(' 可以消除掉(，并将一组括号往sb中存，
                                    // 但因为要去掉最外层的括号，所以如果stack.size==1则不能加入sb中
                    sb.append(")");
                }
                /*else{
                    //啥也不做，只需要移除最外层的'('，也就是移除栈顶元素
                }*/
                stack.pop();
            }
        }
        return sb.toString();
    }
}
